package br.com.ss.seguranca.model.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import br.com.ss.seguranca.model.entity.Usuario;
import br.com.ss.seguranca.model.entity.UsuarioPerfil;

@Component
public class UsuarioPerfilDAO {

	@PersistenceContext
	private EntityManager entityManager;

	@Transactional
	public void save(UsuarioPerfil usuarioPerfil) {
		entityManager.persist(usuarioPerfil);
	}

	@Transactional
	public void merge(UsuarioPerfil usuarioPerfil) {
		entityManager.merge(usuarioPerfil);
	}

	@Transactional
	public void remove(UsuarioPerfil usuarioPerfil) {
		UsuarioPerfil entity = entityManager.merge(usuarioPerfil);
		entityManager.remove(entity);
	}

	@SuppressWarnings("unchecked")
	public List<UsuarioPerfil> list() {
		return entityManager.createQuery("select t from UsuarioPerfil t")
				.getResultList();
	}

	@SuppressWarnings("unchecked")
	public List<UsuarioPerfil> listPerfilPorUsuario(Usuario usuario) {

		Query query = entityManager
				.createQuery("select s from UsuarioPerfil s "
						+ " join fetch s.usuario ");
		// query.setParameter("usuario_id", usuario.getId());
		List<UsuarioPerfil> list = query.getResultList();
		return list;
	}

}
